package com.demo.java.OD601_650.OD609;

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最大时间(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146592138
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        String str = in.nextLine().replace("[", "").replace("]", "");
        System.out.println(getResult(str));
    }

    private static String getResult(String line) {
        final String s = "invalid"; // 如果无法生成有效时间
        final String c = ":"; // 时间中的冒号
        String[] strArray = line.split(","); // 拆分输入字符串
        // 转换为整数列表
        List<Integer> list = Arrays.stream(strArray).map(Integer::parseInt).collect(Collectors.toList());
        StringBuilder result = new StringBuilder(); // 存储生成的时间

        // 获取小时的第一个数字（不能大于3）
        int data1 = getDataOfLocation(list, 3);
        if (data1 != -1) {
            list.remove(Integer.valueOf(data1)); // 移除已使用的数字
            result.append(data1);
        } else {
            return s; // 如果无法找到符合条件的数字，返回invalid
        }

        // 第二位小时数字
        if (result.charAt(0) == '2') {
            int data2 = getDataOfLocation(list, 4); // 如果第一位是2，第二位不能超过3
            if (data2 != -1) {
                list.remove(Integer.valueOf(data2));
                result.append(data2);
                result.append(c); // 添加冒号
            } else {
                return s;
            }
        } else {
            int data3 = getDataOfLocation(list, 10); // 第一位是0或1，第二位可以是0-9
            if (data3 != -1) {
                list.remove(Integer.valueOf(data3));
                result.append(data3);
                result.append(c); // 添加冒号
            } else {
                return s;
            }
        }

        // 获取分钟的第一位，最大不能超过5
        int data4 = getDataOfLocation(list, 6);
        if (data4 != -1) {
            list.remove(Integer.valueOf(data4));
            result.append(data4);
        } else {
            return s;
        }

        // 获取分钟的第二位，最大为9
        int data5 = getDataOfLocation(list, 10);
        if (data5 != -1) {
            list.remove(Integer.valueOf(data5));
            result.append(data5);
        } else {
            return s;
        }

        return result.toString(); // 返回生成的时间
    }

    /**
     * 获取数组中比 standard 小的数字中最大的一个数, 没有则返回-1
     */
    static int getDataOfLocation(List<Integer> list, int standard) {
        return list.stream().filter(x -> x < standard).mapToInt(x -> x).max().orElse(-1);
    }
}